home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Softshoe / Lisa's Mac Parts / Fonts / Face.cp next >
Text File  |  2000-06-23  |  2KB  |  88 lines

  1. // Face.cp
  2.  
  3. #ifndef Face_h
  4. #include "Face.h"
  5. #endif
  6. #ifndef GrafPortObject_h
  7. #include "GrafPortObject.h"
  8. #endif
  9. #ifndef SplitIntegers_h
  10. #include "SplitIntegers.h"
  11. #endif
  12. #ifndef Str_h
  13. #include "Str.h"
  14. #endif
  15. #ifndef OSError_h
  16. #include "OSError.h"
  17. #endif
  18. #ifndef AppearanceManagerUser_h
  19. #include "AppearanceManagerUser.h"
  20. #endif
  21.  
  22. bool Face::operator==( const Face& f ) const
  23.   {
  24.     return font == f.font
  25.          && size == f.size
  26.          && style == f.style;
  27.   }
  28.  
  29. Face Face::ScriptManagerFace( ScriptID script, int16 scriptVariable )
  30.   {
  31.     uint32 packed = GetScriptVariable( script.ID(), scriptVariable );
  32.     return Face( FontNumber( Word1( packed ) ),
  33.                      FontSize( Word0( packed ) ),
  34.                      normal );
  35.   }
  36.  
  37. Face Face::AppearanceManagerFace( ScriptID script,
  38.                                              ThemeFontID themeFontID )
  39.   {
  40.     Assert( AppearanceManagerUser::AtLeastVersion1_1_0() );
  41.  
  42.     String255 name;
  43.     int16 size;
  44.     ::Style style;
  45.     OSStatus error = GetThemeFont( themeFontID,
  46.                                              script.ID(),
  47.                                              name,
  48.                                              &size,
  49.                                              &style );
  50.     OSError::Debug( error );
  51.     if ( error != noErr )
  52.         return ScriptManagerFace( script, smScriptAppFondSize );
  53.     
  54.     return Face( FontNumber( name ), FontSize( size ), style );
  55.   }
  56.  
  57. Face Face::System( ScriptID script )
  58.   {
  59.     return AppearanceManagerUser::AtLeastVersion1_1_0()
  60.        ? AppearanceManagerFace( script, kThemeSystemFont )
  61.        : ScriptManagerFace( script, smScriptSysFondSize );
  62.   }
  63.  
  64. inline Face Face::SmallSystem( ScriptID script )
  65.   {
  66.     return AppearanceManagerUser::AtLeastVersion1_1_0()
  67.        ? AppearanceManagerFace( script, kThemeSmallSystemFont )
  68.        : ScriptManagerFace( script, smScriptSmallFondSize );
  69.   }
  70.  
  71. Face Face::SmallEmphasizedSystem( ScriptID script )
  72.   {
  73.     if ( AppearanceManagerUser::AtLeastVersion1_1_0() )
  74.         return AppearanceManagerFace( script, kThemeSmallEmphasizedSystemFont );
  75.     
  76.     Face result( ScriptManagerFace( script, smScriptSmallFondSize ) );
  77.     result.SetStyle( bold );
  78.     return result;
  79.   }
  80.  
  81. Face Face::Views( ScriptID script )
  82.   {
  83.     if ( AppearanceManagerUser::AtLeastVersion1_1_0() )
  84.         return AppearanceManagerFace( script, kThemeViewsFont );
  85.  
  86.     return Face( FontNumber( "\pGeneva" ), FontSize( 10 ), normal );
  87.   }
  88.